<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<!-- Mirrored from www.wolfssl.com/wolfSSL/Docs_yaSSL_API_Reference.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 17 Jan 2017 13:24:21 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8" /><!-- /Added by HTTrack -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Generator" content="iWeb 3.0.4"/>
<meta name="iWeb-Build" content="local-build-20170103"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<meta name="viewport" content="width=770"/>
<title>wolfSSL - Docs | yaSSL API Reference</title>
<link rel="stylesheet" type="text/css" media="screen,print" href="Docs_yaSSL_API_Reference_files/Docs_yaSSL_API_Reference.css"/>
<!--[if lt IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Docs_yaSSL_API_Reference_files/Docs_yaSSL_API_ReferenceIE.css'/><![endif]-->
<!--[if gte IE 8]><link rel='stylesheet' type='text/css' media='screen,print' href='Media/IE8.css'/><![endif]-->
<script type="text/javascript" src="Scripts/iWebSite.js"></script>
<script type="text/javascript" src="Docs_yaSSL_API_Reference_files/Docs_yaSSL_API_Reference.js"></script>
<meta name="description" content="API reference for the yaSSL SSL library and the TaoCrypt crypto library, including usage references for ciphers."/><meta name="keywords" content="ssl, embedded ssl, ssl documentation, ssl library, tls library, embedded tls, open source ssl, openssl alternatives, encryption libraries, vxworks ssl, Linux ssl, mysql ssl, cryptography library, aes cryptography, C++ ssl, crypto source code, crypto library, md5, aes, sha1, gpl ssl, small openssl"/><meta name="robots" content="follow,index"/> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','../../www.google-analytics.com/analytics.js','ga');ga('create','UA-64826966-1','auto');ga('send','pageview');</script>
 
<script>//<![CDATA[
window.zEmbed||function(e,t){var n,o,d,i,s,a=[],r=document.createElement("iframe");window.zEmbed=function(){a.push(arguments)},window.zE=window.zE||window.zEmbed,r.src="javascript:false",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="display: none",d=document.getElementsByTagName("script"),d=d[d.length-1],d.parentNode.insertBefore(r,d),i=r.contentWindow,s=i.document;try{o=s}catch(c){n=document.domain,r.src='javascript:var d=document.open();d.domain="'+n+'";void(0);',o=s}o.open()._l=function(){var o=this.createElement("script");n&&(this.domain=n),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=t,this.zEQueue=a,this.body.appendChild(o)},o.write('<body onload="document._l();">'),o.close()}("../../assets.zendesk.com/embeddable_framework/main.js","wolfssl.zendesk.com");
//]]></script>
  </head>
<body style="background: rgb(255, 255, 255); margin: 0pt; " onload="onPageLoad();">
<div style="text-align: center; ">
<div style="margin-bottom: 20px; margin-left: auto; margin-right: auto; margin-top: 20px; overflow: hidden; position: relative; word-wrap: break-word;  background: rgb(255, 255, 255); text-align: left; width: 770px; " id="body_content">
<div style="float: left; margin-left: 0px; position: relative; width: 770px; z-index: 0; " id="nav_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div style="clear: both; height: 0px; line-height: 0px; " class="spacer"> </div>
</div>
<div style="float: left; height: 0px; line-height: 0px; margin-left: 0px; position: relative; width: 770px; z-index: 10; " id="header_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
</div>
<div style="margin-left: 0px; position: relative; width: 770px; z-index: 5; " id="body_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
<div id="id1" style="height: 4218px; left: 48px; position: absolute; top: 231px; width: 684px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_684_4218" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-top: 0pt; " class="paragraph_style">I. Overview of the TaoCrypt API<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">All TaoCrypt Hash functions are derived from the HASH Class which provides two very useful virtual functions:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_2">            virtual void Update(const byte*, word32) = 0; <br/></p>
<p class="paragraph_style_2">            virtual void Final(byte*) = 0;<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Most Hashing needs can be fulfilled using these two functions, e.g.,<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            byte md5sum[MD5::DIGEST_SIZE]; <br/></p>
<p class="paragraph_style_2">            byte buffer[1024]; <br/></p>
<p class="paragraph_style_2">            // fill buffer<br/></p>
<p class="paragraph_style_2">            MD5 hash; <br/></p>
<p class="paragraph_style_2">            hash.Update(buffer, 1024); <br/></p>
<p class="paragraph_style_2">            // continue updating if needed <br/></p>
<p class="paragraph_style_2">            hash.Final(md5sum);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">md5sum now contains the digest of the hashed data. The same code can be used for MD2, MD5, SHA-1, or RIPEMD. Using the base class can abstract away the differences:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            void GetDigest(byte* digest, HASH&amp; hash, const byte* input, word32 sz) { <br/></p>
<p class="paragraph_style_2">                        hash.Update(input, sz); <br/></p>
<p class="paragraph_style_2">                        hash.Final(digest); <br/></p>
<p class="paragraph_style_2">            }<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Please see test.cpp for complete examples and test vectors.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_3">A. Message Digests<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">TaoCrypt currently provides HMAC for message digest needs. Update() and Final() are provided, just like the hashing functions, but an additional function is needed for keying:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            void SetKey(const byte*, word32);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">HMAC is as easy to use as the hashes, just provide a hashing function and a key:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            byte digest[SHA::DIGEST_SIZE]; <br/></p>
<p class="paragraph_style_2">            byte buffer[1024]; <br/></p>
<p class="paragraph_style_2">            byte key[16]; <br/></p>
<p class="paragraph_style_2">            // fill buffer and key<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            HMAC&lt;SHA&gt; hmac; <br/></p>
<p class="paragraph_style_2">            hmac.SetKey(key, 16); <br/></p>
<p class="paragraph_style_2">            hmac.Update(buffer, 1024); <br/></p>
<p class="paragraph_style_2">            hmac.Final(digest);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_3">B. Block Ciphers<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">TaoCrypt provides DES, 3DES, and AES for block cipher needs. Currently, ECB and CBC modes are supported (only what SSL and TLS require). Some typedefs are provided in the headers for these ciphers:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">typedef BlockCipher&lt;ENCRYPTION, DES, ECB&gt; DES_ECB_Encryption;</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">The Block Ciphers rely on one function for encrypting and decrypting:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">void Process(byte*, const byte*, word32);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Keying is simple:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            void SetKey(const byte*, word32); <br/></p>
<p class="paragraph_style_2">            void SetKey(const byte*, word32, const byte*);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">The second version is used when an initialization vector is needed. Usage is trivial, to encrypt:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">byte key[8] = { // some key }; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            byte buffer[24] = { // some plain text }; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            byte cipherText[24];<br/></span></p>
<p class="paragraph_style_1"><span class="style">            DES_ECB_Encryption enc; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            enc.SetKey(key, 8); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            enc.Process(cipherText, buffer, 24);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Decrypting is simple as well:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            byte plainText[24];<br/></p>
<p class="paragraph_style_2">            DES_ECB_Decryption dec; <br/></p>
<p class="paragraph_style_2">            dec.SetKey(key, 8); <br/></p>
<p class="paragraph_style_2">            dec.Process(plainText, cipherText, 24);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">3DES and AES are used the same way, please see test.cpp for complete examples.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_3">C. Stream Ciphers<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">TaoCrypt provides ARC4 for stream cipher needs. Like BlockCipher, ARC4 can be used with just two functions:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_2">            void SetKey(const byte*, word32); <br/></p>
<p class="paragraph_style_2">            void Process(byte*, const byte*, word32);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Typdefs are also provided in the header for encryption and decryption needs. Here is a simple example that encrypts:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            byte key[16] = { // some key }; <br/></p>
<p class="paragraph_style_2">            byte buffer[100] = { // some plain text }; <br/></p>
<p class="paragraph_style_2">            byte cipherText[100];<br/></p>
<p class="paragraph_style_2">            ARC4::Encryption enc; <br/></p>
<p class="paragraph_style_2">            enc.SetKey(key, 16); <br/></p>
<p class="paragraph_style_2">            enc.Process(cipherText, buffer, 100);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Decrypting is analogous:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            byte plainText[100];<br/></p>
<p class="paragraph_style_2">            ARC4::Decryption dec; <br/></p>
<p class="paragraph_style_2">            dec.SetKey(key, 16); <br/></p>
<p class="paragraph_style_2">            dec.Process(plainText, cipherText, 100);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Please see test.cpp for a complete example and test vectors.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_3">D. Public Key Cryptography<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">TaoCrypt provides RSA and DSA for Public Key Cryptography.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_4">RSA<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">There are public and private RSA keys, RSA_PublicKey and RSA_PrivateKey. Typically, they are initialized with a Source object, which is usually constructed with a byte array or a file:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            byte privKey[64] = { // some key }; <br/></p>
<p class="paragraph_style_2">            Source privSrc(privKey, 64); <br/></p>
<p class="paragraph_style_2">            RSA_PrivateKey rsaPriv(privSrc);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">A public key can also be constructed from a private key:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">RSA_PublicKey rsaPub(rsaPriv); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            // or a file source example<br/></span></p>
<p class="paragraph_style_1"><span class="style"><br/></span></p>
<p class="paragraph_style_1"><span class="style">            Source fSrc; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            FileSource(&quot;./rsaPublic.dat&quot;, fSrc);<br/></span></p>
<p class="paragraph_style_1"><span class="style"><br/></span></p>
<p class="paragraph_style_1"><span class="style">            RSA_PublicKey rsaPub(fSrc);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Once you have a public key, you can perform public encryption:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            byte buffer[64] = { // plain Text }; <br/></p>
<p class="paragraph_style_2">            byte cipher[64]; <br/></p>
<p class="paragraph_style_2">            RandomNumberGenerator rng;<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            RSAES_Encryptor enc(rsaPub); <br/></p>
<p class="paragraph_style_2">            enc.Encrypt(buffer, 64, cipher, rng);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">RSAES_Encryptor is a typedef for:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">typedef RSA_Encryptor&lt;&gt; RSAES_Encryptor;</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Where the default template argument is RSA_BlockType2, a padding scheme. Decrypting requires a private key:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">byte plain[64]; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            RSAES_Decryptor dec(rsaPriv); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            dec.Decrypt(cipher, 64, plain, rng);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">TaoCrypt can also do RSA sign and verify operations, including the SSL type which require RSA_BlockType1 padding. The member functions SSL_Sign() and SSL_Verify() handle these and are used with the same arguments as encryption and decryption. TaoCrypt handles inversing the keys transparently. Please see test.cpp for a complete example.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_4">DSA<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">There are public and private DSA keys, DSA_PublicKey and DSA_PrivateKey. Typically, they are initialized with a Source object, which is usually constructed with a byte array or a file:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">byte privKey[128] = { // some key };<br/></span></p>
<p class="paragraph_style_1"><span class="style">            Source privSrc(privKey, 128); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            DSA_PrivateKey dsaPriv(privSrc);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Once you have a private DSA key, you can sign a message, usually a SHA digest:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">RandomNumberGenerator rng; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            byte message[SHA::DIGEST_SIZE] = { // a hash }; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            byte signature[40];<br/></span></p>
<p class="paragraph_style_1"><span class="style">            DSA_Signer signer(dsaPriv); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            signer.Sign(message, signature, rng);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Verifying is a simple operation as well:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">DSA_Verifier verifier(dsaPriv); // or Public Key<br/></span></p>
<p class="paragraph_style_1"><span class="style">            bool result = verifier.Verify(message, signautre);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Please see test.cpp for a complete example.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_4">Key Agreement<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">TaoCrypt provides Diffie-Hellman (DH) for key agreement arrangements. The DH class is generally constructed from a Source object to initialize p and g.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">byte key[80] = { // contains p and g }; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            Source keySrc(key, 80); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            DH self(keySrc);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Once you have a DH object, you generate a key pair:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">byte pub[128]; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            byte priv[128]; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            RandomNumberGenerator rng; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            self.GenerateKeyPair(rng, priv, pub);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Then you can send someone your public key and obtain their public one. Using your private key and their public key you can generate an agreement:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            byte agree[128]; <br/>            self.Agree(agree, priv, otherPublicKey);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">The other person will get the same agreement. Please see test.cpp for a complete example.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style">II. Overview of the yaSSL API<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_3">A. Client Side<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">The yaSSL Client side API is declared in namespace yaSSL and is centered on the Client class. A &quot;hello yaSSL&quot; example will prove useful in showing the most basic usage.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">yaSSL::Client client; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            client.SetCa(&quot;ca-cert.pem&quot;); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            yaSSL::SOCKET_T socket; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            // ... do a tcp connect on socket here <br/></span></p>
<p class="paragraph_style_1"><span class="style">            client.Connect(socket); <br/></span></p>
<p class="paragraph_style_1"><span class="style">     <br/></span></p>
<p class="paragraph_style_1"><span class="style">            client.Write(&quot;hello yaSSL&quot;, 12); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            char buffer[80]; <br/></span></p>
<p class="paragraph_style_1"><span class="style">            client.Read(buffer, 80); <br/></span></p>
<p class="paragraph_style_1"><span class="style">            std::cout &lt;&lt; buffer &lt;&lt; std::endl;</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">The Client class is declared in yassl.hpp, which doesn't include any headers itself. No arguments are needed for the constructor, and the only option that is usually set is for Certificate Authority files. These are Certificates that yaSSL will use for verification purposes. After that, the client object only needs a connected socket to perform an SSL connect. yaSSL uses the SOCKET_T type which is used for the differences between BSD style sockets and Windows ones. Please see test.hpp which includes tcp_connect(), all the examples use this function to perform TCP connects. The socket is the only parameter Connect() takes, its prototype is:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">int Connect(SOCKET_T s);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Error handling has been omitted for clarity. Once an SSL connection has been established, transferring data is simple. Two functions handle the needs:<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">            <span class="style">int Write(const void*, int);<br/></span></p>
<p class="paragraph_style_1"><span class="style">            int Read(void*, int);</span><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Once you are done using the Client connection, simply let the object go out of scope (or delete it if it's on the heap), the destructor takes care of closing the connection and cleaning up any memory use. It's that easy.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_3">B. Server Side<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">The server side yaSSL API is also in namespace yaSSL and is based on the Server class, declared in yassl.hpp. All of the same functions as the Client are supported, and the use is exactly the same. Two other functions are needed to control the Server's certificates:<br/></p>
<p class="paragraph_style_2"><br/></p>
<p class="paragraph_style_2">            void SetCert(const char*); <br/></p>
<p class="paragraph_style_2">            void SetKey(const char*);<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1">Please see the examples in the download for further details.<br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1"><br/></p>
<p class="paragraph_style_1"><br/></p>
<p style="padding-bottom: 0pt; " class="paragraph_style_5">Copyright 2017 wolfSSL Inc.  All rights reserved.</p>
</div>
</div>
</div>
<div id="id2" style="height: 34px; left: 511px; position: absolute; top: 157px; width: 224px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_224_34" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_6">yaSSL API Reference</p>
</div>
</div>
</div>
<div id="id3" style="height: 23px; left: 193px; position: absolute; top: 122px; width: 222px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_222_23" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_7"><a class="class1" title="Docs.html" href="Docs.html">Docs</a> <span class="style_1">-&gt;</span> <span class="style_2">yaSSL API Reference</span></p>
</div>
</div>
</div>
<div style="height: 1px; width: 681px;  height: 1px; left: 52px; position: absolute; top: 220px; width: 681px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 681px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_1.jpg" alt="" style="height: 1px; left: 0px; position: absolute; top: 0px; width: 681px; "/>
</div>
</div>
<div style="height: 37px; width: 545px;  height: 37px; left: 191px; position: absolute; top: 80px; width: 545px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 545px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_2.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 545px; "/>
</div>
</div>
<div id="id4" style="height: 25px; left: 200px; position: absolute; top: 84px; width: 43px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_43_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_8"><a class="class2" title="Home.html" href="Home.html">Home</a></p>
</div>
</div>
</div>
<div id="id5" style="height: 25px; left: 365px; position: absolute; top: 84px; width: 72px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_72_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_9"><a class="class3" title="https://wolfssl.com/wolfSSL/download/downloadForm.php" href="https://wolfssl.com/wolfSSL/download/downloadForm.php">Download</a></p>
</div>
</div>
</div>
<div id="id6" style="height: 25px; left: 439px; position: absolute; top: 84px; width: 59px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_59_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_9"><a class="class4" title="License.html" href="License.html">License</a></p>
</div>
</div>
</div>
<div id="id7" style="height: 25px; left: 499px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_9"><a class="class5" title="Blog/Blog.html" href="Blog/Blog.html">Blog</a></p>
</div>
</div>
</div>
<div id="id8" style="height: 25px; left: 589px; position: absolute; top: 84px; width: 80px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_80_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_9"><a class="class6" title="Community.html" href="Community.html">Community</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 245px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_3.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 296px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_4.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 363px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_5.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 438px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_6.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 498px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_7.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 589px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_8.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id9" style="height: 25px; left: 671px; position: absolute; top: 84px; width: 61px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_61_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_9"><a class="class7" title="Contact.html" href="Contact.html">Contact</a></p>
</div>
</div>
</div>
<div id="id10" style="height: 25px; left: 249px; position: absolute; top: 84px; width: 44px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_44_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_8"><a class="class8" title="About.html" href="About.html">About</a></p>
</div>
</div>
</div>
<div style="height: 36px; width: 1px;  height: 36px; left: 670px; position: absolute; top: 81px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_9.png" alt="" style="height: 36px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id11" style="height: 25px; left: 298px; position: absolute; top: 84px; width: 63px; z-index: 1; " class="style_SkipStroke_1 shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_63_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_9"><a class="class9" title="Products.html" href="Products.html">Products</a></p>
</div>
</div>
</div>
<div id="id12" style="height: 25px; left: 549px; position: absolute; top: 84px; width: 41px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_41_25" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_8"><a class="class10" title="Docs.html" href="Docs.html">Docs</a></p>
</div>
</div>
</div>
<div style="height: 37px; width: 1px;  height: 37px; left: 545px; position: absolute; top: 80px; width: 0px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 0px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_10.png" alt="" style="height: 37px; left: 0px; position: absolute; top: 0px; width: 1px; "/>
</div>
</div>
<div id="id13" style="height: 27px; left: 75px; position: absolute; top: 190px; width: 97px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_97_27" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_10"><a class="class11" title="http://www.yassl.com/documentation/yaSSL_API_Reference.pdf" href="http://www.yassl.com/documentation/yaSSL_API_Reference.pdf">Download PDF</a></p>
</div>
</div>
</div>
<div style="height: 22px; width: 22px;  height: 22px; left: 49px; position: absolute; top: 191px; width: 22px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs_yaSSL_API_Reference_files/PDF.png" alt="" style="border: none; height: 22px; width: 22px; "/>
</div>
<div style="height: 16px; width: 20px;  height: 16px; left: 706px; position: absolute; top: 51px; width: 20px; z-index: 1; " class="tinyText">
<div style="position: relative; width: 20px; ">
<img src="Docs_yaSSL_API_Reference_files/shapeimage_11.png" alt="" style="height: 16px; left: 0px; position: absolute; top: 0px; width: 20px; "/>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 707px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<img src="Docs_yaSSL_API_Reference_files/United%20Kingdom(Great%20Britain).png" alt="" style="border: none; height: 19px; width: 19px; "/>
</div>
<div id="id14" style="height: 23px; left: 328px; position: absolute; top: 48px; width: 258px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_258_23" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_11">Questions? +1 (425) 245-8247</p>
</div>
</div>
</div>
<div style="height: 19px; width: 19px;  height: 19px; left: 685px; position: absolute; top: 25px; width: 19px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="http://www.wolfssl.jp/" title="http://www.wolfssl.jp"><img src="Docs_yaSSL_API_Reference_files/japan.png" alt="" style="border: none; height: 19px; width: 19px; "/></a>
</div>
<div id="id15" style="height: 28px; left: 593px; position: absolute; top: 44px; width: 119px; z-index: 1; " class="style_SkipStroke shape-with-text">
<div class="text-content graphic_textbox_layout_style_default_External_119_28" style="padding: 0px; ">
<div class="graphic_textbox_layout_style_default">
<p style="padding-bottom: 0pt; padding-top: 0pt; " class="paragraph_style_12"><a class="class12" title="https://www.wolfssl.com/forums" href="https://www.wolfssl.com/forums">Support <span class="style_3">Forums</span></a></p>
</div>
</div>
</div>
<div style="height: 121px; width: 155px;  height: 121px; left: 32px; position: absolute; top: 5px; width: 155px; z-index: 1; " class="tinyText style_SkipStroke_2">
<a href="Home.html" title="Home.html"><img src="Docs_yaSSL_API_Reference_files/wolfssl_logo.png" alt="" style="border: none; height: 121px; width: 156px; "/></a>
</div>
<div style="height: 4449px; line-height: 4449px; " class="spacer"> </div>
</div>
<div style="height: 100px; margin-left: 0px; position: relative; width: 770px; z-index: 15; " id="footer_layer">
<div style="height: 0px; line-height: 0px; " class="bumper"> </div>
</div>
</div>
</div>
 </body>

<!-- Mirrored from www.wolfssl.com/wolfSSL/Docs_yaSSL_API_Reference.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 17 Jan 2017 13:24:32 GMT -->
</html>
